---
title: "Class SelectableCollection&lt;T> | Customer's Canvas On-Premises"
canonical: "https://customerscanvas.com/docs/on-premises/design-atoms-cs/reference/api/Aurigma.DesignAtoms.Canvas.Collection/SelectableCollection`T`/"
---

# Class SelectableCollection<T>

> **Inheritance:** `System.Object` -> `System.Collections.ObjectModel.Collection<<T>>` -> `Aurigma.DesignAtoms.Canvas.Collection.Collection<<T>>` -> SelectableCollection&lt;T&gt;

# Class SelectableCollection&lt;T&gt;

###### **Namespace**: [Aurigma.DesignAtoms.Canvas.Collection](https://customerscanvas.com/docs/on-premises/design-atoms-cs/reference/api/Aurigma.DesignAtoms.Canvas.Collection.md)

###### **Assembly**: Aurigma.DesignAtoms.dll

```csharp title="Syntax"
public class SelectableCollection<T> : Collection<T>, IList<T>, ICollection<T>, IList, ICollection, IReadOnlyList<T>, IReadOnlyCollection<T>, IEnumerable<T>, IEnumerable where T : class
```

## Implements

* `System.Collections.Generic.IList<<T>>`
* `System.Collections.Generic.ICollection<<T>>`
* `System.Collections.IList`
* `System.Collections.ICollection`
* `System.Collections.Generic.IReadOnlyList<<T>>`
* `System.Collections.Generic.IReadOnlyCollection<<T>>`
* `System.Collections.Generic.IEnumerable<<T>>`
* `System.Collections.IEnumerable`

## Inherited Members

* `Aurigma.DesignAtoms.Canvas.Collection.Collection<<T>>.AddRange(System.Collections.Generic.IEnumerable<<T>>)`
* `Aurigma.DesignAtoms.Canvas.Collection.Collection<<T>>.OnCollectionCleared(<T>[])`
* `Aurigma.DesignAtoms.Canvas.Collection.Collection<<T>>.OnItemAdded(System.Int32,<T>)`
* `Aurigma.DesignAtoms.Canvas.Collection.Collection<<T>>.OnItemRemoved(System.Int32,<T>)`
* `Aurigma.DesignAtoms.Canvas.Collection.Collection<<T>>.SetItem(System.Int32,<T>)`
* `Aurigma.DesignAtoms.Canvas.Collection.Collection<<T>>.OnItemMoved(System.Int32,System.Int32,<T>)`
* `Aurigma.DesignAtoms.Canvas.Collection.Collection<<T>>.Item(System.Int32)`
* `Aurigma.DesignAtoms.Canvas.Collection.Collection<<T>>.ItemAdded`
* `Aurigma.DesignAtoms.Canvas.Collection.Collection<<T>>.ItemRemoved`
* `Aurigma.DesignAtoms.Canvas.Collection.Collection<<T>>.ItemMoved`
* `Aurigma.DesignAtoms.Canvas.Collection.Collection<<T>>.CollectionCleared`
* `System.Collections.ObjectModel.Collection<<T>>.Add(<T>)`
* `System.Collections.ObjectModel.Collection<<T>>.Clear`
* `System.Collections.ObjectModel.Collection<<T>>.CopyTo(<T>[],System.Int32)`
* `System.Collections.ObjectModel.Collection<<T>>.Contains(<T>)`
* `System.Collections.ObjectModel.Collection<<T>>.GetEnumerator`
* `System.Collections.ObjectModel.Collection<<T>>.IndexOf(<T>)`
* `System.Collections.ObjectModel.Collection<<T>>.Insert(System.Int32,<T>)`
* `System.Collections.ObjectModel.Collection<<T>>.Remove(<T>)`
* `System.Collections.ObjectModel.Collection<<T>>.RemoveAt(System.Int32)`
* `System.Collections.ObjectModel.Collection<<T>>.System#Collections#IEnumerable#GetEnumerator`
* `System.Collections.ObjectModel.Collection<<T>>.System#Collections#ICollection#CopyTo(System.Array,System.Int32)`
* `System.Collections.ObjectModel.Collection<<T>>.System#Collections#IList#get_Item(System.Int32)`
* `System.Collections.ObjectModel.Collection<<T>>.System#Collections#IList#set_Item(System.Int32,System.Object)`
* `System.Collections.ObjectModel.Collection<<T>>.System#Collections#IList#Add(System.Object)`
* `System.Collections.ObjectModel.Collection<<T>>.System#Collections#IList#Contains(System.Object)`
* `System.Collections.ObjectModel.Collection<<T>>.System#Collections#IList#IndexOf(System.Object)`
* `System.Collections.ObjectModel.Collection<<T>>.System#Collections#IList#Insert(System.Int32,System.Object)`
* `System.Collections.ObjectModel.Collection<<T>>.System#Collections#IList#Remove(System.Object)`
* `System.Collections.ObjectModel.Collection<<T>>.Count`
* `System.Collections.ObjectModel.Collection<<T>>.Items`
* `System.Collections.ObjectModel.Collection<<T>>.System#Collections#Generic#ICollection<T>#IsReadOnly`
* `System.Collections.ObjectModel.Collection<<T>>.System#Collections#ICollection#IsSynchronized`
* `System.Collections.ObjectModel.Collection<<T>>.System#Collections#ICollection#SyncRoot`
* `System.Collections.ObjectModel.Collection<<T>>.System#Collections#IList#Item(System.Int32)`
* `System.Collections.ObjectModel.Collection<<T>>.System#Collections#IList#IsReadOnly`
* `System.Collections.ObjectModel.Collection<<T>>.System#Collections#IList#IsFixedSize`
* `System.Object.ToString`
* `System.Object.Equals(System.Object)`
* `System.Object.Equals(System.Object,System.Object)`
* `System.Object.ReferenceEquals(System.Object,System.Object)`
* `System.Object.GetHashCode`
* `System.Object.GetType`
* `System.Object.MemberwiseClone`

## Constructors

### SelectableCollection

```csharp
public SelectableCollection()
```

## Properties

### SelectedItem

```csharp
public T SelectedItem { get; set; }
```

### SelectedIndex

```csharp
public int SelectedIndex { get; set; }
```

## Methods

### OnSelectedIndexChanged

```csharp
protected virtual void OnSelectedIndexChanged(int oldIndex, int newIndex)
```

##### Parameters

| Type | Name | Description |
|:---|:---|:---|
| `System.Int32` | *oldIndex* |  |
| `System.Int32` | *newIndex* |  |

##### Type Parameters

| Name | Description |
|:---|:---|
| `T` |  |

### ClearItems

```csharp
protected override void ClearItems()
```

##### Overrides

* `Aurigma.DesignAtoms.Canvas.Collection.Collection<<T>>.ClearItems`

##### Type Parameters

| Name | Description |
|:---|:---|
| `T` |  |

### InsertItem

```csharp
protected override void InsertItem(int index, T item)
```

##### Parameters

| Type | Name | Description |
|:---|:---|:---|
| `System.Int32` | *index* |  |
| `<T>` | *item* |  |

##### Overrides

* `Aurigma.DesignAtoms.Canvas.Collection.Collection<<T>>.InsertItem(System.Int32,<T>)`

##### Type Parameters

| Name | Description |
|:---|:---|
| `T` |  |

### Move

```csharp
public override T Move(int oldIndex, int newIndex)
```

##### Parameters

| Type | Name | Description |
|:---|:---|:---|
| `System.Int32` | *oldIndex* |  |
| `System.Int32` | *newIndex* |  |

##### Returns

`<T>`

##### Overrides

* `Aurigma.DesignAtoms.Canvas.Collection.Collection<<T>>.Move(System.Int32,System.Int32)`

##### Type Parameters

| Name | Description |
|:---|:---|
| `T` |  |

### RemoveItem

```csharp
protected override void RemoveItem(int index)
```

##### Parameters

| Type | Name | Description |
|:---|:---|:---|
| `System.Int32` | *index* |  |

##### Overrides

* `Aurigma.DesignAtoms.Canvas.Collection.Collection<<T>>.RemoveItem(System.Int32)`

##### Type Parameters

| Name | Description |
|:---|:---|
| `T` |  |

## Events

### SelectedIndexChanged

```csharp
public event EventHandler<SelectedIndexChangedEventArgs> SelectedIndexChanged
```
